package pe.com.cotelasa.scp.dominio.service;

import java.util.Collection;
import java.util.Date;
import pe.com.cotelasa.scp.dominio.common.ResultadoServicio;
import pe.com.cotelasa.scp.dominio.common.ResultadoValidacion;
import pe.com.cotelasa.scp.dominio.excepcion.ServiceException;
import pe.com.cotelasa.scp.entidad.OrdenCompraServicio;

public interface IServicioOrdenCompraServicio {

    public Collection<OrdenCompraServicio> listarOrdenCompraServiciosActivas() throws ServiceException;

    public OrdenCompraServicio conseguirOrdenCompraServicioPorId(Integer idOrdenCompraServicio) throws ServiceException;

    public Collection<OrdenCompraServicio> listarTodasOrdenCompraServicios() throws ServiceException;

    public ResultadoValidacion validarOrdenCompraServicio(OrdenCompraServicio ordenCS) throws ServiceException;

    public ResultadoServicio guardarOrdenCompraServicio(OrdenCompraServicio ordenCS) throws ServiceException;

    public ResultadoServicio actualizarOrdenCompraServicio(OrdenCompraServicio ordenCS) throws ServiceException;

    public Collection<OrdenCompraServicio> listarOrdenCompraServiciosPorFiltro(OrdenCompraServicio ordenCS) throws ServiceException;

    public Collection<OrdenCompraServicio> buscarOrdenCompraServiciosPorFiltro(OrdenCompraServicio ordenCS, Date fechaInicio, Date fechaFinal) throws ServiceException;

    public Collection<OrdenCompraServicio> listarOrdenCompraServiciosConCodigo(OrdenCompraServicio ordenCS) throws ServiceException;

    public Collection<OrdenCompraServicio> listarOrdenCSConCodigoPorOP(OrdenCompraServicio ordenCS, String[] listaEstado) throws ServiceException;

    public Collection<OrdenCompraServicio> listarOrdenCSPorOP(OrdenCompraServicio ordenCS) throws ServiceException;

    public Collection<OrdenCompraServicio> listarOrdenCompraServicioPorNroOrden(String nroOrden, String estadoOrdenOS, int idEmpresa) throws ServiceException;

    public OrdenCompraServicio obtenerOrdenCSPorCodigo(OrdenCompraServicio ordenCS) throws ServiceException;

    public Collection<OrdenCompraServicio> buscarOrdenCSReporte(
            OrdenCompraServicio ordenCS,
            String[] listaEstado,
            Date fechaInicio,
            Date fechaFinal) throws ServiceException;

    public int buscarCantidadOC(OrdenCompraServicio ordenCompra) throws ServiceException;

    public int buscarCantidadOS(OrdenCompraServicio ordenServicio) throws ServiceException;
}
